package lanqiao._02算法训练.page04;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author 挚爱之夕
 * @version 1.0
 * @implSpec
 * 问题描述
 * 　　给定2维平面上n个整点的坐标，一条直线最多能过几个点？
 * 输入格式
 * 　　第一行一个整数n表示点的个数
 * 　　以下n行，每行2个整数分别表示每个点的x,y坐标。
 * 输出格式
 * 　　输出一个整数表示答案。
 * 样例输入
 * 5
 * 0 0
 * 1 1
 * 2 2
 * 0 3
 * 2 3
 * 样例输出
 * 3
 * 数据规模和约定
 * 　　n<=1500，数据保证不会存在2个相同的点。
 * 　　点坐标在int范围内
 * @since 2023 - 01 - 03 - 20:51
 */
public class _34共线 {
}
class Main_34{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] points = new int[n][2];
        for(int i = 0; i < n; i++){
            points[i][0] = sc.nextInt();
            points[i][1] = sc.nextInt();
        }
        Map<String, Integer> map = new HashMap<>();
        int t1, t2, gcd;
        int res = 0;
        for(int i = 0; i < n; i++){
            map.clear();
            //过points[i] 的直线
            for(int j = i + 1; j < n; j++){
                t1 = points[j][1] - points[i][1];
                t2 = points[j][0] - points[i][0];
                gcd = gcd(t1, t2);
                t1 /= gcd;
                t2 /= gcd;
                //表示 直线斜率
                String s = t1 + "_" + t2;
                map.put(s, map.getOrDefault(s, 1) + 1);
                //记录最多共线的点数
                res = Math.max(res, map.get(s));
            }
        }
        System.out.println(res);
    }
    static int gcd(int a, int b){
        if(b == 0) return a;
        return gcd(b, a % b);
    }
}
